package com.skyline.user.service;

import com.skyline.user.model.User;

/**
 * AccountInfoService 用户帐户信息业务逻辑，对用户的帐户信息进行操作
 * 
 * @author Jairus Chan
 * @version 0.1,
 */
public interface AccountInfoService {
	/**
	 * modifySecurityInfo对帐户安全信息进行修改
	 * 
	 * @param authority
	 *            隐私程度(完全公开，只对同城，只对朋友，私有)
	 * @param securityQuestion
	 *            安全问题
	 * @param securityAnswer
	 *            安全答案
	 * @param securityEMail
	 *            安全E-mail，当用户需要找回密码里，可以通过安全E-mail来找回，一期不建立，后期考虑
	 * @return void
	 */
	public void modifySecurityInfo(Long userid,Integer authority, String securityQuestion,
			String securityAnswer, String securityEMail);

	/**
	 * modifyPassword对帐户密码进行修改
	 * @param email
	 * @param oldPassword
	 * @param newPassword
	 * @return
	 */
	public boolean modifyPassword(String email,String oldPassword, String newPassword);
	
	/**
	 * modifyPassword对帐户密码进行重置
	 * @param userId
	 * @param newPassword
	 * @return
	 */
	public void restPassword(Long  userId,String newPassword);

	/**
	 * getAountInfoByUserID通过用户ID来查看用户的帐户信息
	 * 
	 * @param userid
	 *            用户ID
	 * @return User 所找到用户
	 */

	public User getAccountInfoByUserID(Long userid);

	/**
	 * getAountInfoByEmail通过用户Email来查看用户的帐户信息
	 * 
	 * @param email
	 *            用户email
	 * @return User 所找到用户
	 */
	public User getAccountInfoByEmail(String email);
	
	/**
	 * 通过email和密码来查看用户的帐户信息（仅仅用于找回密码）
	 * @param email
	 * @param password
	 * @return
	 */
	public User getAccountInfoByEmailAndPswd(String email,String password);
	
	/**
	 * getSecurityQuestion通过用户Email取得用户的安全问题，与checkSecurityAnswer一直使用，达到找回密码的功能
	 * 
	 * @param email
	 *            用户email
	 * @return User
	 */
	public User getSecurityQuestion(String email);

	/**
	 * checkSecurityAnswer 检查用户输入的securityAnswer是否正确
	 * 
	 * @param userid
	 *            用户ID
	 * @param securityAnswer
	 *            用户输入的安全答案
	 * @return boolean 表示是否成功
	 */
	public boolean checkSecurityAnswer(Long userid, String securityAnswer);

	/**
	 * sendSecurityEmail 发送用户的安全E-mail
	 * 
	 * @param email
	 *            用户email
	 * @param securityEmail
	 *            用户securityEmail
	 * @return void
	 */
	public void sendSecurityEmail(String email, String securityEmail);
	
	/**
	 * checkSecurityEmail 检查安全E-mail，用户点击安全E-amil中的链接，checkSecurityEmail（）检查链接中的token 
	 * 
	 * @param token
	 *           token
	 * @return boolean 表示是否成功
	 */
	public boolean checkSecurityEmail(String token);
}
